[llvm] updates to LLVM_ABI export macro definitions #144418
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Update the
LLVM_ABImacro to always resolve to__attribute__((visibility("default")))when building LLVM as a shared library for ELF or Mach-O targets.Background
Previously,
LLVM_ABIwas defined to the C++ style attribute[[gnu::visibility("default")]]when compiling with gcc, which has more restrictions on its placement. Of note, the C++ style attributes cannot decoratefriendfunctions and must not appear afterexternon variable declarations.Documentation for
LLVM_ABIand related annotations is found in the LLVM repo here.Overview
LLVM_ABIto__attribute__((visibility("default")))instead ofLLVM_ATTRIBUTE_VISIBILITY_DEFAULT, which resolves to C++ style[[gnu::visibility("default")]]when compiling with gcc.LLVM_ABI_FRIENDmacro and replace all usages of it withLLVM_ABI.LLVM_ABI_FRIEND.Validation
Built with clang and gcc on Linux.